﻿//using Microsoft.AspNetCore.Mvc;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Threading.Tasks;
//using XDQ.VAT.Items;
//using XDQ.VAT.ItemStorages;

//namespace XDQ.VAT.Web.Controllers
//{
//    [Route("Home")]
//    public class HomeController : Controller
//    {
//        //public HomeController(IExceptionAppService exceptionAppService)
//        //{
//        //    ExceptionAppService = exceptionAppService;
//        //}
//        public IExceptionAppService ExceptionAppService { get; set; }

//        //测试在控制器抛出异常是否会被ExceptionSubscripter收到
//        //实际效果是:
//        // 不会 收到 Exception
//        // 不会 收到 ArgumentNullException
//        // 会 收到 NullReferenceException
//        // 主动抛出的异常(返回值是ActionResult)不会被处理
//        // 主动抛出的异常(返回值类型不是IActionResult)会被处理
//        // 被动抛出的异常会被处理（例如：对象A 指向null,未判断非空而使用A的成员时，抛出的异常）
//        [HttpGet]
//        public JsonResult Index()
//        {
//            throw new Exception(DateTime.Now.ToString());
//            //throw new ArgumentNullException(DateTime.Now.ToString());
//            //throw new NullReferenceException();
//            //DateTime? dt = null;
//            //return new JsonResult(dt.Value);
//        }

//        //测试在服务内抛异常，是否会被ExceptionSubscripter收到
//        //实际效果是不会被收到
//        [HttpGet()]
//        [Route("Error")]
//        public DateTime Error()
//        {
//            return ExceptionAppService.Error();
//        }

//        [HttpGet()]
//        [Route("ErrorAsync")]
//        public JsonResult Error1()
//        {
//            return new JsonResult(ExceptionAppService.Error1());
//        }


//        //测试在服务内抛异常,并由当前服务捕获后抛出友好异常，是否会被ExceptionSubscripter收到
//        //实际效果是不会被收到
//        [HttpGet()]
//        [Route("ErrorAndHandle")]
//        public JsonResult ErrorAndHandle()
//        {
//            return new JsonResult(ExceptionAppService.ErrorAndHandle());
//        }

//        //测试在服务内抛异常,并由当前服务捕获后抛出友好异常，是否会被ExceptionSubscripter收到
//        //实际效果是不会被收到
//        [HttpGet()]
//        [Route("ErrorAndHandleAsync")]
//        public JsonResult ErrorAndHandle1()
//        {
//            return new JsonResult(ExceptionAppService.ErrorAndHandle1());
//        }

//        //测试在服务内抛异常,并由当前服务自行记录日志，是否会被ExceptionSubscripter收到
//        //实际效果是不会被收到
//        [HttpGet()]
//        [Route("ErrorAndLog")]
//        public JsonResult ErrorAndLog()
//        {
//            return new JsonResult(ExceptionAppService.ErrorAndLog());
//        }

//        [HttpGet()]
//        [Route("ErrorAndLogAsync")]
//        public JsonResult ErrorAndLog1()
//        {
//            return new JsonResult(ExceptionAppService.ErrorAndLog1());
//        }

//    }
//}
